"""
初始化数据库脚本
注意：
- mx_user_info 和 mx_role 表已经存在，不需要创建
- 本脚本只创建新的业务表（mx_employees, mx_leave_applications, mx_attendance_records）
- 员工可以没有系统账号（user_id 为 NULL）
- 使用 init_roles.py 创建用户账号
"""
from app.app import create_app
from app import db
from app.models import Employee, UserInfo, Role

# 创建应用上下文
app = create_app('development')

with app.app_context():
    print("=" * 60)
    print("初始化数据库")
    print("=" * 60)
    
    # 创建新的业务表（mx_user_info 和 mx_role 已存在）
    print("\n创建业务表...")
    db.create_all()
    print("✅ 业务表创建成功（mx_employees, mx_leave_applications, mx_attendance_records）")
    
    # 检查现有数据
    print("\n📊 检查现有数据:")
    print(f"   角色数量: {Role.query.count()}")
    print(f"   用户账号数量: {UserInfo.query.count()}")
    print(f"   员工数量: {Employee.query.count()}")
    
    # 插入测试员工数据（不创建账号）
    print("\n创建测试员工数据...")
    
    if Employee.query.count() == 0:
        test_employees = [
            Employee(
                employee_id='EMP001',
                name='张三',
                phone='13800138001',
                email='zhangsan@example.com',
                company='北京分公司',
                department='技术部',
                position='项目经理',
                status='active'
            ),
            Employee(
                employee_id='EMP002',
                name='李四',
                phone='13800138002',
                email='lisi@example.com',
                company='北京分公司',
                department='人力资源部',
                position='HR主管',
                status='active'
            ),
            Employee(
                employee_id='EMP003',
                name='王五',
                phone='13800138003',
                email='wangwu@example.com',
                company='上海分公司',
                department='技术部',
                position='工程师',
                status='active'
            ),
            Employee(
                employee_id='EMP004',
                name='赵六',
                phone='13800138004',
                email='zhaoliu@example.com',
                company='上海分公司',
                department='财务部',
                position='财务主管',
                status='active'
            )
        ]
        
        for emp in test_employees:
            db.session.add(emp)
        
        db.session.commit()
        print(f"✅ 成功创建 {len(test_employees)} 个测试员工（无账号）")
    else:
        print("⚠️  员工数据已存在，跳过创建")
    
    print("\n" + "=" * 60)
    print("数据库初始化完成！")
    print("=" * 60)
    print("\n📋 数据统计:")
    print(f"   角色: {Role.query.count()}")
    print(f"   用户账号: {UserInfo.query.count()}")
    print(f"   员工: {Employee.query.count()}")
    print(f"   有账号的员工: {Employee.query.filter(Employee.user_id.isnot(None)).count()}")
    
    print("\n💡 下一步:")
    print("   1. 运行 'python flowable/init_roles.py' 创建角色和测试账号")
    print("   2. 部署 BPMN 流程到 Flowable")
    print("   3. 启动 Flask 服务器测试 API")
